Operating system (OS) failures are the most common cause of fatal errors in present day computer systems. Unfortunately, there are virtually no reliable techniques for recovering from OS failures other than fully rebooting the system (i.e., crashing the OS), which requires the system to go offline. In some applications (e.g., home computers), going offline to reboot the system may be a mere inconvenience. However, in other applications (e.g., commercial banking, etc.), going offline to reboot the system may result in significant revenue loss. Furthermore, OS crashes can cause critical data to be lost. As such, techniques for recovering from OS failures without fully rebooting the system (i.e., without crashing the OS) are desired.